package com.alibaba.citrus.cr.b2b.trade.order.sdo;


import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Data
public class OrderSDO implements Serializable {
    private static final long serialVersionUID = -4925264972133891912L;

    /**
     * 支付信息
     */
    private PaymentInformationSDO paymentInformationSDO;

    /**
     * 销售订单行
     */
    private List<OrderLineSDO> orderLineSDOS;

    /**
     * 履约信息
     */
    private DeliverOrderSDO deliverOrderSDO;

    /**
     * 客户编码，SAP客户编码，售达方编码
     */
    private String customerCode;

    /**
     * 客户名称，SAP客户名称，售达方名称
     */
    private String customerName;

    /**
     * 销售组织编码
     */
    private String organizationCode;

    /**
     * 销售组织名称
     */
    private String organizationName;

    /**
     * 销售部门编码
     */
    private String departmentCode;

    /**
     * 销售部门名称
     */
    private String departmentName;

    /**
     * 销售渠道编码
     */
    private String saleChannelCode;
    /**
     * 销售渠道名称
     */
    private String saleChannelName;

    /**
     * 业务渠道编码，现代，特通等
     */
    private String channelCode;

    /**
     * 业务渠道名称
     */
    private String channelName;

    /**
     * 收货地址编码，送达方地址
     */
    private String receiveAddressCode;

    /**
     * 收货地址详细地址
     */
    private String receiveDetailAddress;

    /**
     * 发货时间
     */
    private Date deliveryTime;

    /**
     * 运输方式
     */
    private String transportModeCode;

    /**
     * 运输方式名称
     */
    private String transportModeName;

    /**
     * 主键/销售订单ID
     */
    private String id;

    /**
     * 预报主订单ID
     */
    private String frontOrderId;

    /**
     * 业务身份
     */
    private String bizCode;

    /**
     * 商业能力编码
     */
    private String businessCode;

    /**
     * 租户
     */
    private String tenantId;

    /**
     * 产品组/货品组编码
     */
    private String productGroupCode;

    /**
     * 货品组名称
     */
    private String productGroupName;

    /**
     * 订单状态(有效/无效状态/删除)
     */
    private Integer status;

    /**
     * 订单状态描述
     */
    private String statusDesc;

    /**
     * 提交原因，创建销售单原因
     */
    private String createReason;

    /**
     * 交付状态，待交货，部分交货，已交货
     */
    private Integer deliveryStatus;

    /**
     * 完结时间
     */
    private Date endTime;

    /**
     * 扩展信息
     */
    private Map<String, String> features;

    /**
     * 备注
     */
    private String remark;

    /**
     * 创建时间
     */
    private Date gmtCreate;

    /**
     * 更新时间
     */
    private Date gmtModified;

    /**
     * 创建人
     */
    private String creatorId;

    /**
     * 创建人姓名
     */
    private String creatorName;
    /**
     * 修改人ID
     */
    private String modifierId;

    /**
     * 修改人姓名
     */
    private String modifierName;
    /**
     * 版本号
     */
    private Integer syncVersion;
    /**
     * 外部SAP销售订单号
     */
    private String outerOrderId;
    /**
     * 幂等ID
     */
    private String idemId;
    /**
     * 逻辑仓库编码，发货仓
     */
    private String wareHouseCode;

    /**
     * 逻辑仓库名称
     */
    private String wareHouseName;

    /**
     * 客户参考号
     */
    private String customerReferenceNumber;

    /**
     * 客户参考日期
     */
    private Date customerExpectDate;

    /**
     * 成本中心
     */
    private String costCenter;
    /**
     * 现金客户名称
     */
    private String cashCustomerName;


    /**
     * 订单类型，免费订单，现金订单，标准订单
     */
    private String orderType;

    /**
     * 销售订单名称
     */
    private String orderTypeName;

    /**
     * 订单标签，标识同一订单类型下，不同场景的订单
     */
    private String orderTag;

    /**
     * 退货原因
     */
    private String reverseReason;

    private String contactor;

    private String contactorPhone;

    private String featureStr;

}
